class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # 排序：先按起始位置升序，起始相同则按结束位置升序
        intervals.sort(key=lambda x: (x[0], x[1]))
        
        i = 1
        while i < len(intervals):
            # 判断当前区间与前一个区间是否重叠
            if intervals[i][0] <= intervals[i-1][1]:
                # 合并区间：更新前一个区间的结束位置
                intervals[i-1][1] = max(intervals[i-1][1], intervals[i][1])
                # 删除当前区间
                intervals.pop(i)
            else:
                # 不重叠则移动到下一个区间
                i += 1
        
        return intervals
